﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Linq.Expressions;
using AL.DAL.Core;

namespace AL.BLL {

    public interface IServiceBase<T> where T : class {

        /// <summary>
        /// HH: 使用代理自动加载实体类的子类集合
        /// </summary>
        bool ProxyCreationEnabled { get; set; }

        /// <summary>
        /// HH: 基于 IEnumerable 的基础分页方法（单个条件，排序传入字段的字符串）
        /// </summary>
        IEnumerable<T> PageList(string orderBy, bool isAsc, Expression<Func<T, bool>> where, int pageIndex, int pageSize, out int rowsCount);

        /// <summary>
        /// HH: 基于 IEnumerable 的基础分页方法（单个条件）
        /// </summary>
        IEnumerable<T> PageList<TKey>(Expression<Func<T, TKey>> orderBy, bool isAsc, Expression<Func<T, bool>> where, int pageIndex, int pageSize, out int rowsCount);
        /// <summary>
        /// HH: 基于 IEnumerable 的基础分页方法（多个条件）
        /// </summary>
        PagedResult<T> PageList<TKey>(Expression<Func<T, TKey>> orderBy, bool isAsc, List<Expression<Func<T, bool>>> where, int pageIndex, int pageSize);
    }
}
